package com.cmcc.migu.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.cmcc.migu.cmmon.util.DigestUtil;
import com.cmcc.migu.cmmon.util.FileValid;
import com.cmcc.migu.cmmon.util.FtpClientUtil;

/** 
 *
 * ftp工具类
 * @Project: UIM-CLIENT
 * @File: FtpUtil.java 
 * @Date: 2015年5月18日 
 * @Author: shengyongfu
 * @Copyright: 版权所有 (C) 2015 中国移动 杭州研发中心. 
 *
 * @注意：本内容仅限于中国移动内部传阅，禁止外泄以及用于其他的商业目的 
 */
public class FtpUtil {
	private static Logger logger = LoggerFactory.getLogger(FtpUtil.class);
	
	/**
	* Description: 向FTP服务器上传文件
	* @Version1.0 
	* @param url FTP服务器hostname
	* @param port FTP服务器端口
	* @param username FTP登录账号
	* @param password FTP登录密码
	* @param path FTP服务器保存目录
	* @param filename 上传到FTP服务器上的文件名
	* @param localFilePath 本地文件路径
	* @return 成功返回true，否则返回false
	*/ 
	public static boolean uploadFile(String url,Integer port,String username,String password,String path, String filename, String localFilePath) {
		FtpClientUtil ftpClient = new FtpClientUtil(url, port, username, password);
		Boolean retFlag = false;
		try {
			if (ftpClient.open()) {
				File file = new File(localFilePath);
				InputStream input = new FileInputStream(file);
				retFlag = ftpClient.uploadFile(path, filename, input);
			}
		}catch(Exception ex){
			logger.error("run fileUpload error:"+ex.getMessage(),ex);
		}finally{
			ftpClient.close();
		}
		return retFlag;
	}
	
	/**
	 * 从服务器下载文件
	 * @param url	FTP服务器hostname
	 * @param port	FTP服务器端口
	 * @param username	FTP服务器用户名
	 * @param password	FTP服务器密码
	 * @param remoteFilenPath ftp服务器路径+文件名
	 * @param localFilePath	下载目的位置(路径+文件名)
	 * @return 成功返回true，否则返回false
	 */
	public static boolean downloadFile(String url,Integer port,String username,String password,String  remoteFilenPath, String localFilePath){
		FtpClientUtil ftpClient = new FtpClientUtil(url, port, username, password);
		Boolean retFlag = false;
		try {
			if (ftpClient.open()) {
				ftpClient.get(remoteFilenPath, localFilePath);
				retFlag = true;
			}
		}catch(Exception ex){
			logger.error("run fileUpload error:"+ex.getMessage(),ex);
		}finally{
			ftpClient.close();
		}
		return retFlag;
	}
	
	/**
	 * 根据文件 获取 MD5校验码
	 * @param file
	 * @return
	 */
	public static String getMD5(File file){
		FileValid fileValid = new FileValid("MD5");
		try {
			return fileValid.getFileMD5String(file);
		} catch (IOException e) {
			logger.error("run getMD5 error:" + e.getMessage(), e);
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 根据文件 获取SHA1校验码
	 * @param file
	 * @return
	 */
	public static String getSHA1(File file){
		FileValid fileValid = new FileValid("SHA1");
		try {
			return fileValid.getFileMD5String(file);
		} catch (IOException e) {
			logger.error("run getSHA1 error:" + e.getMessage(), e);
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 根据文件获取 CRC校验码
	 * @param file
	 * @return
	 */
	public static String getCRC32(File file){
		return DigestUtil.getCRC32(file);
	}

}
